<?php namespace Common\Model;
use Hdphp\Model\Model;
class Goods extends Model{
	protected $table = "goods";

	protected $validate = array(
		array('gname','required','商品名称不能为空',3,3),
		array('shopprice','required','商城价格不能为空',3,3),
		array('stock','required','总库存不能为空',3,3)
	);

	public $auto = array(
		array('time','time','function',3,1)
	);

	// 添加（添加3张表）
	public function addData(){
		// 判断自动验证
		if(!$this->create()) return false;
		// 实例化商品详情模型
		$goodsdetail = new \Common\Model\Goodsdetail;
		// 判断商品详细是否为空（自动验证）
		if(!$goodsdetail->create()){
			$this->error = $goodsdetail->getError();
			return false;
		}
		// 获取到商品表中分类字段，字段里包含类型ID，用|分开转为数组
		$tid = explode('|',Q('post.category_cid'));
		$tid = $tid[1];
		// 把获取到的类型ID tid添加进商品表里
		$this['type_tid'] = $tid;
		// 判断是否有列表图上传
		if(Q('post.listView')){
			// 获取列表图，获得的是一个数组
			$listView = Q('post.listView');
			// 把数组转为字符串，用|分隔
			$listView = implode('|', $listView);
			// 把转化好的字符串添加进商品表里
			$this['listView'] = $listView;
		}
		// 执行添加，返回的是添加得出的商品ID
		$gid = $this->add();

		// 获得商品图册，是数组
		$img = Q('post.img');
		// 用|把数组分隔
		$img = implode('|', $img);
		// 重组数组
		$data = array(
			// 把字符串添加进商品详情表
			'img' => $img,
			// 获取post提交来的商品详细
			'intro' => Q('post.intro'),
			// 把执行商品添加返回来的ID，添加到商品详情表
			'goods_gid' => $gid
		);
		// 执行添加，把重组的数组添加到商品详细表
		$goodsdetail->add($data);

		// 实例化商品属性模型
		$goodsAttr = new \Common\Model\Goodsattr;
		// 获取post提交来的商品属性值
		$goodsvalue = Q('post.goodsvalue');
		// 获取post提交来的附加价格
		$goodsadded = Q('post.added');
		// 设置一个空数组
		$goodsAttrData = array();
		// 添加商品ID到空数组里
		$goodsAttrData['goods_gid'] = $gid;
		// 遍历所有的类型属性
		foreach ($goodsvalue as $k => $v) {
			// $k为类型属性ID，放进空数组里
			$goodsAttrData['typeAttr_aid'] = $k;
			// 判断，如果$v是数组的话，说明添加的规格里有附加价格
			if(is_array($v)){
				// 遍历$v
				foreach ($v as $key => $value) {
					// $k为遍历的第一次，查看该商品是否有多个商品属性，$key为查询到属性是否存在附加价格
					// 把规格里面附加价格添加进空数组
					$goodsAttrData['added'] = $goodsadded[$k][$key];
					// $value为遍历到的商品属性值
					$goodsAttrData['goodsvalue'] = $value;
					//执行添加，添加到商品属性表
					$goodsAttr->add($goodsAttrData);
				}
			}else{
				// 如果不是数组，则没有附加价格，所有可以直接添加，附加价格字段默认为0
				$goodsAttrData['goodsvalue'] = $v;
				//执行添加，添加到商品属性表
				$goodsAttr->add($goodsAttrData);
			}
		}
		return true;
	}

	// 修改（修改3张表）
	public function editData($gid){
		// 判断自动验证
		if(!$this->create()) return false;
		$goodsdetail = new \Common\Model\Goodsdetail;
		if(!$goodsdetail->create()){
			$this->error = $goodsdetail->getError();
			return false;
		}
		// 修改商品表**********************************
		// 获取到商品表中分类字段，字段里包含类型ID，用|分开转为数组
		$tid = explode('|',Q('post.category_cid'));
		$tid = $tid[1];
		// 把获取到的类型ID tid添加进商品表里
		$this['type_tid'] = $tid;

		// 判断列表图是否是数组（上传多张）
		if(is_array(Q('post.listView'))){
			$listView = Q('post.listView');
			$listView = implode('|', $listView);
			$this['listView'] = $listView;
		}
		$this->save();

		// 修改商品详细表*******************************
		// 判断商品图册是否是数组（上传多张）
		if(is_array(Q('post.img'))){
			$img = Q('post.img');
			$img = implode('|', $img);
			$goodsdetail['img'] = $img;
		}
		$goodsdetail->save();

		// 修改商品属性表********************************
		// 实例化商品属性模型
		$goodsAttr = new \Common\Model\Goodsattr;
		// 删除原数据库里的信息，重新添加
		$goodsAttr->where("goods_gid={$gid}")->delete();
		// 获取post提交来的商品属性值
		$goodsvalue = Q('post.goodsvalue');
		// 获取post提交来的附加价格
		$goodsadded = Q('post.added');
		// 设置一个空数组
		$goodsAttrData = array();
		// 添加商品ID到空数组里
		$goodsAttrData['goods_gid'] = $gid;
		// 遍历所有的类型属性
		foreach ($goodsvalue as $k => $v) {
			// $k为类型属性ID，放进空数组里
			$goodsAttrData['typeAttr_aid'] = $k;
			// 判断，如果$v是数组的话，说明添加的规格里有附加价格
			if(is_array($v)){
				// 遍历$v
				foreach ($v as $key => $value) {
					// $k为遍历的第一次，查看该商品是否有多个商品属性，$key为查询到属性是否存在附加价格
					// 把规格里面附加价格添加进空数组
					$goodsAttrData['added'] = $goodsadded[$k][$key];
					// $value为遍历到的商品属性值
					$goodsAttrData['goodsvalue'] = $value;
					// 添加到数据库
					$goodsAttr->add($goodsAttrData);
				}
			}else{
				// 如果不是数组，则没有附加价格，所有可以直接添加，附加价格字段默认为0
				$goodsAttrData['goodsvalue'] = $v;
				// 添加到数据库
				$goodsAttr->add($goodsAttrData);
			}
		}
		
		return true;
	}

	// 删除（删除3张表）
	public function delData($gid){
		$goodsdetail = new \Common\Model\Goodsdetail;
		$goodsattr = new \Common\Model\Goodsattr;
		$this->where("gid={$gid}")->delete();
		$goodsdetail->where("goods_gid={$gid}")->delete();
		$goodsattr->where("goods_gid={$gid}")->delete();
		return true;
	}

}



 ?>